package cn.baage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;


@Service
public class DataService {

    private final String key = "queuing:";


    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    private List<String> userIds = new ArrayList<String>() {{
        add("001");
        add("002");
        add("003");
        add("004");
        add("005");
        add("006");
        add("007");
        add("008");
    }};


    public String getCurData() {
        if (userIds.isEmpty()) {
            return null;
        }
        return userIds.get(0);
    }

    public synchronized void nextData(String value) {
        if (value == null || !value.equals(getCurData())) {
            return;
        }
        redisTemplate.delete(key + value);
        userIds.remove(0);
        if (userIds.isEmpty()) {
            return;
        }
        // 设置下次超时
        String nextData = getCurData();
        redisTemplate.opsForValue().set(key + nextData, nextData);
        redisTemplate.expire(key + nextData, 30, TimeUnit.SECONDS);
    }


}
